package Song.Han.Demo05;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

/*
    java.util,Properties extends Hashtable<k,v> implements Map<k,v>

    Properties类表示一个持久的属性集，Properties可保存再流中或从流中加载。
        store()方法可以将集合中的数据持久化写入硬盘
        load()方法可以将硬盘中的文件（键值对），读取到集合中使用
    属性列表中每一个键对应值都是一个字符串

    Properties集合是一个双列集合，key和value默认都是字符串
*/
public class Demo01Properties {
    public static void main(String[] args) throws IOException {
        //show01();
        //show02();
        show03();
    }

    private static void show03() throws IOException {
        //1.创建集合对象
        Properties prop = new Properties();

        //2.load()方法可以将硬盘中的文件（键值对），读取到集合中使用
        prop.load(new FileReader("E:\\IDeaProject\\Day14\\src\\Song\\Han\\Demo05\\prop.txt"));

        //3.遍历集合
        Set<String> set = prop.stringPropertyNames();
        for (String key : set) {
            System.out.print(key+": ");
            System.out.println(prop.getProperty(key));
        }

    }

    private static void show02() throws IOException {
        //1.创建集合对象
        Properties prop = new Properties();
        prop.setProperty("张三","168");
        prop.setProperty("李四","169");
        prop.setProperty("王五","172");
        prop.setProperty("赵六","188");

        //2.创建流对象，绑定目的地
        FileWriter fw = new FileWriter("E:\\IDeaProject\\Day14\\src\\Song\\Han\\Demo05\\prop.txt");

        //3.使用store()方法可以将集合中的数据持久化写入硬盘
        prop.store(fw,"save data");
        fw.close();
    }

    private static void show01() {
        Properties prop = new Properties();

        //Object setProperty(String key, String value) 调用Hashtable的put方法
        prop.setProperty("张三","168");
        prop.setProperty("李四","169");
        prop.setProperty("王五","172");
        prop.setProperty("赵六","188");

        //Set<String> stringPropertyNames();  返回此属性列表的key集，相当于Map集合中的keySet方法
        Set<String> set = prop.stringPropertyNames();

        //遍历set，取出key
        for (String key : set) {
            String value = prop.getProperty(key);
            System.out.println(key+": "+value);
        }
    }
}
